package response

// UserListResponse 用户管理分页
type UserListResponse struct {
	Id         int64              `json:"id"`                // 主键
	Username   string             `json:"name"`              // 名字
	Sex        int                `json:"sex"`               // 性别
	Phone      string             `json:"phone"`             // 手机号
	Email      string             `json:"email"`             // 邮箱
	UserStatus int                `json:"status"`            // 用户状态
	Avatar     string             `json:"avatar"`            // 头像
	Desc       string             `json:"desc"`              // 描述
	UserRole   []UserRoleResponse `json:"userRole" gorm:"-"` // 当前用户拥有的角色信息
}

// UserRoleResponse 用户角色
type UserRoleResponse struct {
	Id     int64  `json:"roleId"`
	Name   string `json:"roleName"`
	UserId int64  `json:"-"`
}

// UserLoginResponse 用户登录返回数据
type UserLoginResponse struct {
	UserId   int64      `json:"userId"`   // 用户ID
	Username string     `json:"username"` // 用户名称
	Phone    string     `json:"phone"`    // 手机号
	Email    string     `json:"email"`    // 邮箱
	Token    string     `json:"token"`    // Token
	Roles    []RoleInfo `json:"roles"`    // 当前用户拥有的角色信息
	Perms    []PermInfo `json:"perms"`    // 资源信息
}

// RoleInfo 角色信息
type RoleInfo struct {
	Id   int64  `json:"id"`   // 角色ID
	Name string `json:"name"` // 角色名称
	Code string `json:"code"` // 角色编码
}

// PermInfo 资源信息
type PermInfo struct {
	Id       int64      `json:"id"`                // 资源ID
	Name     string     `json:"name"`              // 资源名称
	Code     string     `json:"code"`              // 资源编码
	Types    int        `json:"types"`             // 资源类型
	Icon     string     `json:"icon"`              // 图标
	Level    int        `json:"level"`             // 层级
	ParentId int64      `json:"parentId"`          // 上级机构ID
	Path     string     `json:"path"`              // 路径
	OrderNo  int        `json:"orderNo"`           // 权重
	Children []PermInfo `json:"children" gorm:"-"` // 下级资源
}

// UserPageResponse 用户分页查询返回数据
type UserPageResponse struct {
	UserId   int64  `json:"userId"`   // 用户ID
	Username string `json:"username"` // 用户名成
	Phone    string `json:"phone"`    // 手机号
	Email    string `json:"email"`    // 邮箱
}

// UserInfoResponse 用户详情
type UserInfoResponse struct {
	UserId      int64  `json:"userId"`
	Username    string `json:"username"`
	RealName    string `json:"realName"`
	Avatar      string `json:"avatar"`
	Desc        string `json:"desc"`
	Password    string `json:"password"`
	Token       string `json:"token"`
	Permissions []struct {
		Label string `json:"label"`
		Value string `json:"value"`
	} `json:"permissions"`
}

func NewUserInfo() *UserInfoResponse {
	return &UserInfoResponse{
		UserId:   1,
		Username: "admin",
		RealName: "admin",
		Avatar:   "",
		Desc:     "manager",
		Password: "123456",
		Token:    "123456789",
		Permissions: []struct {
			Label string `json:"label"`
			Value string `json:"value"`
		}{{Label: "主控台", Value: "dashboard_console"}, {Label: "监控页", Value: "dashboard_monitor"}, {Label: "基础列表", Value: "basic_list"}, {Label: "工作台", Value: "dashboard_workplace"}, {Label: "基础列表删除", Value: "basic_list_delete"}},
	}
}

// UserDetailResponse 获取用户详情
type UserDetailResponse struct {
	Id         int64   `json:"id"`               // 用户ID
	Name       string  `json:"name"`             // 用户名称
	Phone      string  `json:"phone"`            // 手机号
	Email      string  `json:"email"`            // 邮箱
	Sex        int     `json:"sex"`              // 性别
	Desc       string  `json:"desc"`             // 描述
	UserStatus int     `json:"userStatus"`       // 用户状态
	RoleIds    []int64 `json:"roleIds" gorm:"-"` // 角色
	PermIds    []int64 `json:"permIds" gorm:"-"` // 资源
}
